相比較過渡,動畫可以實現更多變化、更多控制,連續自動播放等效果。
製作動畫分為兩步 :
a. 先定義動畫
b. 在使用動畫
a.用keyframes定義動畫 (類似定義選擇器)
@keyframes 動畫名稱{
0%{
width:100px;
}
100%{
width:200px;
}
}
動畫序列 :
b.元素使用動畫
CSS:
/* 頁面一打開 一個盒子就從左邊走到右邊 */
/* 1.定義動畫 */
@keyframes move {
/* 開始狀態 */
0% {
transform: translateX(0px);
}
/* 結束狀態 */
100% {
transform: translateX(1000px);
}
}
div {
width: 200px;
height: 200px;
/* margin: 100px auto; */
background-color: gold;
/* 2.調用動畫 */
/* animation-name:動畫名稱; */
animation-name: move;
/* 持續時間 */
/* animation-duration: 持續時間; */
animation-duration: 2s;
}
HTML:
<div>
</div>
/* 動畫名稱 */
/* 動畫名稱 */
/* animation-name: move; */
/* 持續時間 */
/* animation-duration: 2s; */
/* 運動曲線 */
/* linear(勻速) */
/* animation-timing-function: ease; */
/* 何時開始 */
/* animation-delay: 1s; */
/* 是否重複 EX:默認為1*/
/* animation-iteration-count: 1; */
/* 重複無限次 */
/* animation-iteration-count: infinite; */
/* 是否進行逆向播放 默認為normal*/
/* animation-direction: normal; */
/* 逆向播放 */
/* animation-direction: alternate; */
/* 規定動畫結束的狀態 默認為backwards 回到起始狀態*/
/* animation-fill-mode: backwards; */
/* 停留在結束狀態 forwards */
/* animation-fill-mode: forwards; */
/* animation: name duration timing-function delay iteration-count direction fill-mode; */
animation:動畫名稱 持續時間 運動曲線 何時開始 播放次數 是否反方向 動畫起始 或者結束的狀態;
animation:myfirst 5s linear 2s inginite alternate ;
CSS:
<style>
@keyframes move {
0% {
transform: translate(0, 0);
}
100% {
transform: translate(1000px, 0);
}
}
div {
width: 200px;
height: 100px;
background-color: sandybrown;
animation: move 2s linear 0s 1 alternate forwards;
}
/* 滑鼠經過停止動畫 離開後繼續 */
div:hover {
animation-play-state: paused;
}
</style>
HTML:
<div>
</div>